]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
keyboard: Figure out keypad visibility through purpose hints
authorCarlos Garnacho <carlosg@gnome.org>
Fri, 26 Jan 2024 17:00:51 +0000 (18:00 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Thu, 29 Feb 2024 15:34:21 +0000 (16:34 +0100)
Drop the keypad-visible KeyController signal, and figure it out
through the already notified purpose hint.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3162>

js/ui/keyboard.js

index 05ea5bad655feb51252a11dc3553c233aa74a384..a3629f78d4afff6b8c2f2ba6e75b2a7fbcc29b1f 100644 (file)
@@ -1406,7 +1406,6 @@ export const Keyboard = GObject.registerClass({
             'groups-changed', this._onKeyboardGroupsChanged.bind(this),
             'panel-state', this._onKeyboardStateChanged.bind(this),
             'purpose-changed', this._onPurposeChanged.bind(this),
-            'keypad-visible', this._onKeypadVisible.bind(this),
             this);
         global.stage.connectObject('notify::key-focus',
             this._onKeyFocusChanged.bind(this), this);
@@ -1458,25 +1457,33 @@ export const Keyboard = GObject.registerClass({
             y_expand: true,
         });
 
-        let groups = [groupName];
-        if (groupName.includes('+'))
-            groups.push(groupName.replace(/\+.*/, ''));
-        groups.push('us');
+        if (purpose === Clutter.InputContentPurpose.DIGITS ||
+            purpose === Clutter.InputContentPurpose.NUMBER ||
+            purpose === Clutter.InputContentPurpose.PHONE) {
+            this._onKeypadVisible(null, true);
+        } else {
+            let groups = [groupName];
+            if (groupName.includes('+'))
+                groups.push(groupName.replace(/\+.*/, ''));
+            groups.push('us');
+
+            if (purpose === Clutter.InputContentPurpose.TERMINAL)
+                groups = groups.map(g => `${g}-extended`);
+
+            for (const group of groups) {
+                try {
+                    keyboardModel = new KeyboardModel(group);
+                } catch (e) {
+                    // Ignore this error
+                }
+            }
 
-        if (purpose === Clutter.InputContentPurpose.TERMINAL)
-            groups = groups.map(g => `${g}-extended`);
+            if (!keyboardModel)
+                return;
 
-        for (const group of groups) {
-            try {
-                keyboardModel = new KeyboardModel(group);
-            } catch (e) {
-                // Ignore this error
-            }
+            this._onKeypadVisible(null, false);
         }
 
-        if (!keyboardModel)
-            return;
-
         let levels = keyboardModel.getLevels();
 
         for (let i = 0; i < levels.length; i++) {
@@ -2190,20 +2197,14 @@ class KeyboardController extends Signals.EventEmitter {
     _onContentPurposeHintsChanged(method) {
         let purpose = method.content_purpose;
         let emojiVisible = false;
-        let keypadVisible = false;
 
         if (purpose === Clutter.InputContentPurpose.NORMAL ||
             purpose === Clutter.InputContentPurpose.ALPHA ||
             purpose === Clutter.InputContentPurpose.PASSWORD ||
             purpose === Clutter.InputContentPurpose.TERMINAL)
             emojiVisible = true;
-        if (purpose === Clutter.InputContentPurpose.DIGITS ||
-            purpose === Clutter.InputContentPurpose.NUMBER ||
-            purpose === Clutter.InputContentPurpose.PHONE)
-            keypadVisible = true;
 
         this.emit('emoji-visible', emojiVisible);
-        this.emit('keypad-visible', keypadVisible);
         this.emit('purpose-changed', purpose);
     }